package com.ywt.cda.core.dao;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

import com.ywt.cda.core.dao.page.Page;

public interface IBatisEntityDao_<T extends BaseEntity>
{

	Serializable insert(BaseEntity o);

	<T> void insertBatch(List<T> list);

	void updateByPrimaryKeySelective(BaseEntity o);

	void updateSelective(BaseEntity o);

	/**
	 * 
	 * @description get(根据id值获取对象)
	 * @conditions (这里描述这个方法适用条件 – 可选)
	 * @param id
	 * @return T
	 * @exception
	 * @since 1.0.0
	 */
	T get(Serializable id);

	/**
	 * 
	 * @description get(根据传入的对象得到对象唯一值)
	 * @conditions (这里描述这个方法适用条件 – 可选)
	 * @param map
	 * @return T
	 * @exception
	 * @since 1.0.0
	 */
	T get(Map<String, String> map);

	/**
	 * 以下为根据条件获取list和分页查询======================================================
	 * =================================
	 */

	/**
	 * 
	 * @description query(根据某个对象传入值查询得到list)
	 * @conditions (这里描述这个方法适用条件 – 可选)
	 * @param map
	 * @return List<T>
	 * @exception
	 * @since 1.0.0
	 */
	List<T> query(Map<String, Object> map);

	/**
	 * 
	 * @description queryCount(根据某个对象传入值查询得到count)
	 * @conditions (这里描述这个方法适用条件 – 可选)
	 * @param map
	 * @return Integer
	 * @exception
	 * @since 1.0.0
	 */
	Integer queryCount(Map<String, String> map);

	/**
	 * 
	 * @description queryPaged(根据传入的map得到list，记录总数，分页)
	 * @conditions (这里描述这个方法适用条件 – 可选)
	 * @param parameterObject
	 * @return Page
	 * @exception
	 * @since 1.0.0
	 */
	Page queryPaged(Map<String, String> parameterObject, Page page);

	Page queryPaged_(Map<String, Object> parameterObject, Page page);

	int delete(Serializable id);

}
